package util;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class ConversorPPMJPG {

	private final String MKDIR = "mkdir images-testing-jpg" + File.separator;
	private final String CAMINHO_IMAGES_TESTING = "images-testing" + File.separator;
	private final String CAMINHO_IMAGES_TESTINGJPG = "images-testing-jpg" + File.separator;
	private final String PMN_TO_JPEG = "pnmtojpeg --grayscale ";



	public ConversorPPMJPG(){
		super();	
	}


	public void converter(){
		Process process;
		Runtime run;

		try {
			//iterar pelas 42 pastas
			StringBuilder stringPasta;
			StringBuilder stringArquivo = new StringBuilder();

			for (int i = 0; i < 43 ; i++){
				stringPasta = new StringBuilder("000");

				if (i < 10){
					stringPasta.append("0");
				}
				
				//valor da pasta
				stringPasta.append(i);
				
				//cria uma pasta em imagems-testing-jpg
				run = Runtime.getRuntime();
				process = run.exec(MKDIR + ""+ stringPasta.toString());
				process.waitFor();

				//acessa a pasta caminhoimagestesting
				File pasta = new File(CAMINHO_IMAGES_TESTING + "" +  stringPasta.toString() );
				
				//pega todos arquivos
				File[] listaDeArquivos = pasta.listFiles();
				
				//itera sobre eles
				for (int j = 0; j < listaDeArquivos.length; j++) {
					
					//se não for o arquivo .csv
					if (!listaDeArquivos[j].getName().contains("csv")){
						
						//stringArquivo contem o nome do arquivo
						stringArquivo.append(listaDeArquivos[j].getName());
						
						//chama o comando pmntojpeg e coloca a resposta num InputStream;
						process = run.exec(PMN_TO_JPEG + CAMINHO_IMAGES_TESTING + stringPasta + File.separator + stringArquivo.toString());
						process.waitFor();
						InputStream isr = process.getInputStream();

						//crie um arquivo na pasta images-testing-jpg com o nomedoarquivo.jpg
						stringArquivo.replace(stringArquivo.length()-3, stringArquivo.length(), "jpg");
						File file = new File(CAMINHO_IMAGES_TESTINGJPG + stringPasta + File.separator + stringArquivo.toString());
						file.createNewFile();

						//cria um fileoutputstream
						FileOutputStream fos = new FileOutputStream(file);
						//escreve os bytes no arquivo
						int a = isr.read();
						while (a != -1){
							fos.write(a);
							a = isr.read();
						}
						fos.close();

					}//fim da verificação dos arquivos.csv

					stringArquivo.delete(0, stringArquivo.length());
				}//fim do for de cada arquivo

				System.out.println("Estou na pasta " + stringPasta.toString());
				stringPasta.delete(0, stringPasta.length());
			}//fim do for das 42 pastas

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}



}
